//输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有奇数位于数组的前半部分，所有偶数位于数组的后半部分。 
//
// 
//
// 示例： 
//
// 
//输入：nums = [1,2,3,4]
//输出：[1,3,2,4] 
//注：[3,1,2,4] 也是正确的答案之一。 
//
// 
//
// 提示： 
//
// 
// 0 <= nums.length <= 50000 
// 1 <= nums[i] <= 10000 
// 
// Related Topics 数组 双指针 排序 👍 151 👎 0


package leetcode.editor.cn1;

//Java：调整数组顺序使奇数位于偶数前面

import java.util.ArrayList;
import java.util.List;

/**
 * 输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有奇数位于数组的前半部分，所有偶数位于数组的后半部分。
 * 输入：nums = [1,2,3,4]
 */
public class DiaoZhengShuZuShunXuShiQiShuWeiYuOuShuQianMianLcof {
    public static void main(String[] args) {
        Solution solution = new DiaoZhengShuZuShunXuShiQiShuWeiYuOuShuQianMianLcof().new Solution();
        // TO TEST
        int[] res = solution.exchange(new int[]{1,2,3,4});
        for (int re : res) {
            System.out.println(re);
        }
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int[] exchange(int[] nums) {
            if (nums.length == 0)
                return new int[]{};
            // i 表示上一个偶数
            // j 表示上一个奇数
            int i = -1, j = -1;
            int nlen = nums.length;
            List<Integer> ilist = new ArrayList<>();
            List<Integer> jlist = new ArrayList<>();
            for (int k = 0; k < nlen; k++) {
                if (nums[k] % 2 == 0) {
                    ilist.add(nums[k]);
                } else {
                    jlist.add(nums[k]);
                }
            }

            jlist.addAll(ilist);
            for (int k = 0; k < nlen; k++) {
                nums[k] = jlist.get(k);
            }
            return nums;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}
